﻿using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel;
using CozeDto.Base;
using FluentValidation;

namespace CozeDto.AdminDtos
{
    /// <summary>
    ///数据校验类要继承自 AbstractValidator
    ///通过 AbstractValidator 的泛型参数指定对哪个类进行校验
    /// </summary>
    public class ReqAddAdminValidator : AbstractValidator<ReqAddAdmin>
    {
        /// <summary>
        /// 校验规则写到校验类的构造方法中
        /// </summary>
        public ReqAddAdminValidator()
        {
            // 通过RuleFor来指定要对哪个属性进行校验
            // 多个校验规则可以采用链式调用的写法
            // 每个需要校验的属性对应一组RuleFor调用
            RuleFor(x => x.Account).NotNull().WithMessage("账号不可为空");
            //RuleFor(x => x.Roles).NotNull().WithMessage("所属角色不可为空");

            // 通过RuleFor来指定要对哪个属性进行校验
            // 多个校验规则可以采用链式调用的写法
            // 每个需要校验的属性对应一组RuleFor调用
            //RuleFor(x => x.Email)
            //    .EmailAddress()
            //    // 在Must方法中编写自定义校验规则，
            //    .Must(v => v.EndsWith("@qq.com") || v.EndsWith("@163.com"))
            //    // 通过WithMessage方法自定义报错信息，
            //    // WithMessage方法设置的报错信息只作用于它之前的那个校验规则
            //    .WithMessage("只支持QQ和163邮箱");

            RuleFor(x => x.Pwd)
                .NotNull()
                .Length(6, 18).WithMessage("密码长度必须介于6到18之间")
                .Equal(x => x.PasswordConfirm).WithMessage("两次密码必须一致");

            //RuleFor(x => x.Name).NotNull().Length(3, 10)
            //    .WithMessage("用户名必须3到10位");
            //RuleFor(x => x.Email).NotNull().EmailAddress()
            //    .Must(x => x.EndsWith("@163.com") || x.EndsWith("@qq.com"))
            //    .WithMessage("必须是163或qq邮箱");
            //RuleFor(x => x.Password1).NotNull().Length(5, 10)
            //    .WithMessage("密码长度为5到10")
            //    .Equal(x => x.Password2).WithMessage("两次密码必须相等"); 
        }
    }

    /// <summary>
    /// 添加管理员
    /// </summary>
    public class ReqAddAdmin : BaseAddModel
    {
        /// <summary>
        /// 手机号
        /// </summary>
        public string? Phone { get; set; }

        /// <summary>
        /// 账号
        /// </summary> 
        public string? Account { get; set; }

        /// <summary>
        /// 密码
        /// </summary> 
        public string? Pwd { get; set; }

        /// <summary>
        /// 二次密码确认
        /// </summary>
        public string? PasswordConfirm { get; set; }

        /// <summary>
        /// 昵称
        /// </summary> 
        public string? NickName { get; set; }

        /// <summary>
        /// 邮箱
        /// </summary>
        public string? Email { get; set; }

        /// <summary>
        /// 微信账户，用于发送企业消息推送通知
        /// </summary>
        public string? WeChartAccount { get; set; }


        /// <summary>
        /// 所属站点,多个逗号隔开
        /// </summary>
        public List<string>? TenantIds { get; set; }

        /// <summary>
        /// 所属角色
        /// </summary> 
        //public List<string>? Roles { get; set; }

        /// <summary>
        /// 描述
        /// </summary> 
        public string? Description { get; set; }

        /// <summary>
        /// 状态
        /// </summary> 
        public bool? Status { get; set; } = false;
    }
}
